1 背景知识
本文介绍 pg_profile 相关函数和使用方式。
2 服务器函数
2.1 create_server
- 创建远程服务器连接。
create_server(server name, server_connstr text, server_enabled boolean = TRUE, max_sample_age integer = NULL, description text = NULL)
- 参数说明
参数 |
说明 |
server |
指定远程服务器的名字,必须唯一。 |
server_connstr |
指定远程服务器连接串。 |
enabled |
指定此服务是否启用,能否被 take_sample 调用。 |
max_sample_age |
指定最大的采样数量,如果未设置由 [[PostgreSQL pg_profile 参数#2.2 pg_profile.max_sample_age = 7 ]] 指定 |
description |
远程服务的描述。 |
2.2 drop_server
- 函数语法。
drop_server(server name)
- 函数说明。
删除服务器及其所有示例。
2.3 enable_server
- 函数语法。
enable_server(server name)
- 函数说明。
take_sample()
启用收集统计信息。
2.4 disable_server
- 函数语法。
disable_server(server name)
- 函数说明。
take_sample()
禁用用收集统计信息。
2.5 rename_server
- 函数语法。
rename_server(server name, new_name name)
- 函数说明。
重命名服务器。
2.6 set_server_max_sample_age
- 函数语法。
set_server_max_sample_age(server name, max_sample_age integer)
- 函数说明。
指定服务器统计信息的保留期(以天为单位)。max_sample_age
是整数值。若要重置服务器 max_sample_age
设置,请将其设置为 NULL。
2.7 set_server_db_exclude
- 函数语法。
set_server_db_exclude(server name, exclude_db name[])
- 函数说明。
设置无需收集的数据库列表。适用于无法连接到集群中的某些数据库(例如在 mazon RDS 实例中)时使用。
2.8 set_server_connstr
- 函数语法。
set_server_connstr(server name, new_connstr text)
- 函数说明。
为服务器设置新的连接字符串。
2.9 set_server_description
- 函数语法。
set_server_description(server name, description text) Set new server description.
- 函数说明。
设置新的服务器描述。
2.10 show_servers()
显示现有服务器。
3 统计信息采样函数
3.1 take_sample
- 函数语法。
take_sample()
take_sample(server name [, skip_sizes boolean])
- 函数说明。
此函数将会按照顺序一个一个的收集所有启用的 服务器连接 的统计信息。返回信息格式如下:
server name,
result text,
elapsed interval
返回值 |
说明 |
server |
返回服务器连接名称。 |
result |
返回服务器连接是否成功,如果连接成功返回OK ,如果返回失败则显示报错信息。 |
elapsed |
返回统计信息采样所花费的时间。 |
3.2 show_samples
- 函数语法。
show_samples([server name,] [days integer])
- 函数说明。
返回所有的采集快照。如果指定 days
参数,则返回最近几天的采集快照。
sample integer,
sample_time timestamp (0) with time zone,
sizes_collected boolean,
dbstats_reset timestamp (0) with time zone,
clustats_reset timestamp (0) with time zone,
archstats_reset timestamp (0) with time zone
返回值 |
说明 |
sample |
快照标识符 |
sample_time |
生成快照的时间。 |
sizes_collected |
如果数据库中的对象的大小已被收集,则为true。 |
dbstat_reset |
|
clustats_reset |
|
archstats_reset |
|
3.3 delete_samples
- 函数语法。
delete_samples([server_name name] [, start_id integer, end_id integer])
delete_samples(server_name name, time_range tstzrange)
- 函数说明。
此函数用于删除指定时间范围的快照。
参数 |
说明 |
start_id |
指定快照的删除起始id。 |
end_id |
指定快照的删除终止id。 |
server_name |
服务器名称 |
time_range |
时间范围 |
4 子快照函数
4.1 take_subsample ()
- 函数语法。
take_subsample()
- 函数说明。
采集一个子快照。
4.2 set_server_subsampling
- 函数语法。
set_server_subsampling(server name, subsample_enabled boolean, min_query_duration interval, min_xact_duration interval, min_xact_age integer, min_idle_xact_dur interval hour to second)
- 函数说明。
设置服务器的子快照收集相关设置。
参数 |
说明 |
subsample_enabled |
是否启用子采样任务。 |
min_query_duration |
查询时长的阈值。 |
min_xact_duration |
事务持续时间阈值。 |
min_xact_age |
事务年龄的阈值。 |
min_idle_xact_dur |
空闲事务阈值。 |
4.3 take_sample_subset
- 函数语法。
take_sample_subset([sets_cnt integer], [current_set integer])
- 函数说明。
由于 服务器连接 收集子任务采样信息。
set_cnt
是服务器子任务收集的数量。
current_set
是当前服务器要处理的子任务的数量。
server name,
result text,
elapsed interval
返回值 |
说明 |
server |
返回服务器连接名称。 |
result |
返回服务器连接是否成功,如果连接成功返回OK ,如果返回失败则显示报错信息。 |
elapsed |
返回统计信息采样所花费的时间。 |
5 基线函数
5.1 create_baseline
- 函数语法。
create_baseline([server name,] baseline_name varchar(25), start_id integer, end_id integer [, days integer])
create_baseline([server name,] baseline_name varchar(25), time_range tstzrange [, days integer])
- 函数说明。
创建一个基线。
参数 |
说明 |
server |
服务器名称。如果省略,则假定为本地服务器 |
name |
基线名称。每个基线在服务器中必须具有唯一的名称。 |
start_id,end_id |
将第一个快照和最后一个快照,包含在此基线中。 |
days |
基线保留时间。自 now() 起以整数天为单位定义。此参数可以省略(或设置为 null),这意味着无限保留。 |
time_range |
基线时间间隔。基线将包括所有可用样本,与此间隔重叠。 |
5.2 drop_baseline
- 函数语法。
drop_baseline([server name,] name varchar(25))
- 函数说明。
删除一个基线。
参数 |
说明 |
server |
服务器名称。如果省略,则假定为本地服务器。 |
name |
要删除的基线名称。删除基线并不意味着立即删除其所有样本,它们只是被排除在基线之外,因此基线保留不会涵盖更多内容。 |
5.3 keep_baseline
- 函数语法。
keep_baseline([server name,] name varchar(25) [, days integer])
- 函数说明。
设置基线的保留策略。
参数 |
说明 |
server |
服务器名称。如果省略,则假定为本地服务器。 |
name |
基线名称。可以省略此参数(或设置为 null)以更改所有现有基线的保留期。 |
days |
基线的保留时间(以天为单位,从现在开始())。此外,可以省略(或设置为 null)以设置无限保留。 |
5.4 show_baselines
- 函数语法。
show_baselines([server name])
- 函数说明。
显示基线列表。
参数 |
说明 |
server |
服务器名称。如果省略,则假定为本地服务器 |
6 报告函数
6.1 get_report
- 按照快照标识符生成报告。
get_report([server name,] start_id integer, end_id integer [, description text [, with_growth boolean]]) - generate report by sample identifiers
- 按照时间范围生成报告。
get_report([server name,] time_range tstzrange [, description text [, with_growth boolean]])
- 按照基线生成报告。
get_report([server name], baseline varchar(25) [, description text [, with_growth boolean]])
6.2 get_report_latest
- 生成两个最新生成的快照的报告。
get_report_latest([server name])
参数 |
说明 |
server name |
服务器名称。如果省略,则为local 。 |
start_id |
快照开始的id 序列号。 |
end_id |
快照结束的id 序列号。 |
time_range |
时间范围(tstzrange 类型)。 |
baseline |
一个基准名称。 |
with_growth |
一个标记参数,指定end_id 序列号为最新的快照。 |
description |
备忘录,这将被包含文本报告中。 |
7 get_diffreport
可以使用快照标识符,基线和时间范围作为间隔参数生成差异报告。
7.1 单一参数传参
- 按照快照标识符作为间隔参数,生成两个区间的差异报告。
get_diffreport([server name,] start1_id integer, end1_id integer, start2_id integer, end2_id integer [, description text [, with_growth boolean]])
- 按照基线作为间隔参数,生成两个区间的差异报告。
get_diffreport([server name,] baseline1 varchar(25), baseline2 varchar(25) [, description text [, with_growth boolean]])
- 按照
tstzrange
类型作为时间范围间隔参数,生成两个区间的差异报告。
get_diffreport([server name,] time_range1 tstzrange, time_range2 tstzrange [, description text [, with_growth boolean]])
7.2 照混合传参
- 按照基线和时间范围,生成两个区间的差异报告。
get_diffreport([server name,] baseline varchar(25), time_range tstzrange [, description text [, with_growth boolean]])
- 按照时间范围和基线,生成两个区间的差异报告。
get_diffreport([server name,] time_range tstzrange, baseline varchar(25) [, description text [, with_growth boolean]])
- 按照快照区间ID和基线,生成两个区间的差异报告。
get_diffreport([server name,] start1_id integer, end1_id integer, baseline varchar(25) [, description text [, with_growth boolean]])
- 按照基线和快照ID,生成两个区间的差异报告。
get_diffreport([server name,] baseline varchar(25), start2_id integer, end2_id integer [, description text [, with_growth boolean]])
8 统计信息导入导出函数
8.1 export()
- 函数语法。
export_data([server name, [min_sample_id integer,] [max_sample_id integer]] [, obfuscate_queries boolean])
- 函数说明。
导出统计信息数据。
参数 |
说明 |
server name |
服务器名称。如果省略,则为local 。 |
min_sample_id |
快照开始的id 序列号。 |
max_sample_id |
快照结束的id 序列号。 |
obfuscate_queries |
加密查询,将输出的数据进行MD5 值加密。 |
8.2 import()
- 函数语法。
import_data(data regclass, server_name_prefix text)
- 函数说明。
参数 |
说明 |
data |
包含需要导入统计信息的表。 |
server_name_prefix |
用于在服务器连接 前添加前缀。 |
所有服务器连接都会被添加禁止标签。
如果想要新追加数据请,不要设置此函数的服务器连接的前缀(server_name_prefix)参数。
如果想要重命名服务器连接请,设置前缀(server_name_prefix)参数,以区别不同的统计信息数据。
导入统计信息数据之后可以删除 import
表。